using System;
using System.Collections.Generic;
using System.Text;

namespace CreamX.Framework.Attributes
{
    [global::System.AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)]
    public sealed class CreamXComponentAttribute : Attribute
    {
        // See the attribute guidelines at 
        //  http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/cpconusingattributeclasses.asp
        readonly string _friendlyname;
        

        // This is a positional argument.
        public CreamXComponentAttribute(string friendlyname)
        {
            this._friendlyname = friendlyname;
        }
        public string FriendlyName
        {
            get
            {
                return this._friendlyname;
            }
        }
        private bool _showinEditor=true;

        public bool ShowInEditor
        {
            get { return _showinEditor; }
            set { _showinEditor = value; }
        }
        private string _group;

        public string Group
        {
            get { return _group; }
            set { _group = value; }
        }

    }


    [global::System.AttributeUsage(AttributeTargets.Property, Inherited = false, 
        AllowMultiple = false)]
    public sealed class CreamXComponentPropertyAttribute : Attribute
    {
        // See the attribute guidelines at 
        //  http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/cpconusingattributeclasses.asp
        readonly string _friendlyname;
        bool _templateRef;
        
        // This is a positional argument.
        public CreamXComponentPropertyAttribute(string friendlyname)
        {
            this._friendlyname = friendlyname;
        }
        public string FriendlyName
        {
            get
            {
                return this._friendlyname;
            }
        }
        
        public bool TemplateRef
        {
            get { return _templateRef; }
            set { _templateRef = value; }
        }

        private string _defaultValue;

        public string DefaultValue
        {
            get { return _defaultValue; }
            set { _defaultValue = value; }
        }

    }

    [global::System.AttributeUsage(AttributeTargets.Enum, Inherited = false,
        AllowMultiple = false)]
    public sealed class CreamXObjectTypeAttribute : Attribute
    {
        public CreamXObjectTypeAttribute()
        {
        }

    }
}
